package Strategy.After;

import java.util.ArrayList;
import java.util.List;

/**
 * Here we can see the solution
 */
public class Game
{

    /**
     * Now we can cast when we are ready.
     */
    public static void main( String[] args )
    {
        List<SpellCommand> spellsToCast = new ArrayList<SpellCommand>( );

        Key userInput = getUserKeyInput();
        if( userInput.equals( "c" ) )
        {
            spellsToCast.add( new CloakSpell() );
        }
        else if( userInput.equals( "d" ) )
        {
            spellsToCast.add( new DarknessSpell() );
        }
        else if( userInput.equals( "f" ) )
        {
            spellsToCast.add( new FreezeSpell() );
        }
    }

    public static Key getUserKeyInput()
    {
        return new Key();
    }

}

interface SpellCommand
{
    void executeSpell();
}

class CloakSpell implements SpellCommand
{
    public void executeSpell()
    {
        // Cast the cloak spell
    }
}

class DarknessSpell implements SpellCommand
{
    public void executeSpell()
    {
        // Cast the darkness spell
    }
}

class FreezeSpell implements SpellCommand
{
    public void executeSpell()
    {
        // Cast the freeze spell
    }
}


class Key
{

}